#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
远程服务器启动脚本

使用方法:
    python start_remote_server.py [--server-id ID] [--signaling-host HOST] [--signaling-port PORT]

示例:
    python start_remote_server.py --server-id my_server --signaling-host localhost --signaling-port 5555
"""

import sys
import os
import argparse
import asyncio

# 添加remote_server目录到Python路径
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'remote_server'))

# 直接导入
try:
    from remote_server.server import RemoteServer
except ImportError:
    # 如果模块导入失败，尝试直接导入
    import server
    RemoteServer = server.RemoteServer

async def main():
    parser = argparse.ArgumentParser(description='WebRTC远程服务器')
    parser.add_argument('--server-id', default=None, help='服务器ID (默认: 自动生成)')
    parser.add_argument('--signaling-host', default='localhost', help='信令服务器地址 (默认: localhost)')
    parser.add_argument('--signaling-port', type=int, default=5555, help='信令服务器ZMQ端口 (默认: 5555)')
    parser.add_argument('--video-width', type=int, default=640, help='视频宽度 (默认: 640)')
    parser.add_argument('--video-height', type=int, default=480, help='视频高度 (默认: 480)')
    parser.add_argument('--video-fps', type=int, default=30, help='视频帧率 (默认: 30)')
    
    args = parser.parse_args()
    
    print("="*50)
    print("WebRTC P2P Demo - 远程服务器")
    print("="*50)
    print(f"服务器ID: {args.server_id or '自动生成'}")
    print(f"信令服务器: {args.signaling_host}:{args.signaling_port}")
    print(f"视频配置: {args.video_width}x{args.video_height}@{args.video_fps}fps")
    print("="*50)
    print("")
    print("功能说明:")
    print("1. 自动连接到信令服务器")
    print("2. 等待前端WebRTC连接")
    print("3. 提供视频流和消息回复服务")
    print("4. 支持自动重连")
    print("")
    print("按 Ctrl+C 停止服务器")
    print("="*50)
    
    # 创建远程服务器实例
    server = RemoteServer(
        server_id=args.server_id,
        signaling_host=args.signaling_host,
        signaling_port=args.signaling_port
    )
    
    try:
        print("\n正在启动远程服务器...")
        await server.start()
    except KeyboardInterrupt:
        print("\n收到中断信号，正在停止服务器...")
    except Exception as e:
        print(f"\n服务器运行错误: {e}")
        import traceback
        traceback.print_exc()
    finally:
        await server.stop()
        print("远程服务器已停止")

def run():
    """同步运行函数"""
    try:
        asyncio.run(main())
    except KeyboardInterrupt:
        pass
    except Exception as e:
        print(f"启动失败: {e}")
        sys.exit(1)

if __name__ == '__main__':
    run()